import { defineStore } from "pinia";

// 登录请求返回的content里的token返回值类型
interface TokenState {
    access_token: string,
    token_type: string,
    refresh_token: string,
    expires_in: number,
    user_id: string
}

export const useTokenStore = defineStore("mytoken", () => {
    // ref 类型，用于存储token
    const tokenJson = ref('')
    // computed 类型，用于获取token对象
    const token = computed<TokenState>(() => {
        try {
            // 刷新页面后tokenJson为空，则去本地找token，没有则返回空对象
             return JSON.parse(tokenJson.value || window.localStorage.getItem('Token') || '{}')
        } catch (error) {
            ElMessage.error('token格式错误')
            window.localStorage.removeItem('Token')
            throw error
        }
       
})

// functions 类型，用于设置token
function setToken(data: string) {
    tokenJson.value = data
    // token保存到本地
    window.localStorage.setItem('Token', data)
}

// 向外暴露
return { token,setToken}

})